import type { PropType } from 'vue'

import type {
  // IFromProps, // 表单组件的属性
  // IRuleMeta, // 验证
  // IFormColShow, // 子组件的联动
  // ISubs, // 分栏
  IFromMeta // 表单控件需要的 meta
} from '../types/30-form'

import type { IFormItem, IFormItemList } from '../types/20-form-item'

import type { ESize } from '../types/enum'
import { ESize as size } from '../types/enum'

// import type { 
//  IFormItem // 表单子组件的属性
// } from '../types/20-form-item'

/**
 * 表单控件需要的属性
 */
export const formProps = {
  /**
   * 表单的完整的 model
   */
  model: {
    type: Object as PropType<any>,
  },
  /**
   * 根据选项过滤后的 model
   */
  partModel: {
    type: Object as PropType<any>,
    default: () => { return {}}
  },
  /**
   * 表单控件的 meta
   */
  formMeta: {
    type: Object as PropType<IFromMeta>,
    default: () => { return {}}
  },
  /**
   * 表单控件的子控件的 meta 集合
   */
  itemMeta: {
    type: Object as PropType<IFormItemList>
  },
  /**
   * 标签的后缀
   */
  labelSuffix: {
    type: String,
    default: '：' 
  },
  /**
   * 标签的宽度
   */
  labelWidth: {
    type: String,
    default: '130px'
  },
  /**
   * 控件的规格
   */
  size: {
    type: Object as PropType<ESize>,
    default: size.small
  }
}